package fr.afcepf.vod.managedbean;

import java.util.ArrayList;
import java.util.List;


import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;

import fr.afcepf.vod.dto.LignePanier;
import fr.afcepf.vod.dto.Panier;
import fr.afcepf.vod.entities.Video;
import fr.afcepf.vod.metier.IGestionPanier;

@ManagedBean
@SessionScoped
public class MbPanier {

	private Panier p; 
	private Video selectedVideo;

	@ManagedProperty(value = "#{gestionPanierImpl}")
	private IGestionPanier gestionPanierImpl;

	@ManagedProperty(value = "#{mbConnexion}")
	private MbConnexion mbConnexion;
	
	private int videoCount;
	
	
	@PostConstruct
	public void initialiserPage() {
		p = new Panier();
		videoCount = 0;
	}
	

	public String validerPanier() {
		return "AccueilClient.jsf";
	}

	public String ajouterPanier() {
		
		LignePanier lp = new LignePanier();
		lp.setVideo(selectedVideo);
		p.setClient(mbConnexion.getClient());
		if (p.getChoixVideos()==null) {
		p.setChoixVideos(new ArrayList<LignePanier>());
		}
		p.getChoixVideos().add(lp);
		if (p.getChoixVideos().size() > 0) {
			for (LignePanier lpanier : p.getChoixVideos()) {
				System.out.println(lpanier.getVideo().getNom());
			}
		}
		
		videoCount = p.getChoixVideos().size();
		
		return "";

	}

	public String supprimerPanier() {
		List<LignePanier> listeVideo = p.getChoixVideos();
		List<LignePanier> aSupprimer = new ArrayList<LignePanier>();
		for(LignePanier lp : listeVideo){
			if(lp.isSupprimer()){
				aSupprimer.add(lp);
			}
			
		}
		p.getChoixVideos().removeAll(aSupprimer);

		videoCount = p.getChoixVideos().size();
		
		return "Panier.jsf";
	}

	public IGestionPanier getGestionPanierImpl() {
		return gestionPanierImpl;
	}

	public void setGestionPanierImpl(IGestionPanier gestionPanierImpl) {
		this.gestionPanierImpl = gestionPanierImpl;
	}

	public Panier getP() {
		return p;
	}

	public void setP(Panier p) {
		this.p = p;
	}

	public Video getSelectedVideo() {
		return selectedVideo;
	}

	public void setSelectedVideo(Video selectedVideo) {
		this.selectedVideo = selectedVideo;
	}

	public MbConnexion getMbConnexion() {
		return mbConnexion;
	}

	public void setMbConnexion(MbConnexion mbConnexion) {
		this.mbConnexion = mbConnexion;
	}


	public int getVideoCount() {
		return videoCount;
	}


	public void setVideoCount(int videoCount) {
		this.videoCount = videoCount;
	}

	
}
